package com.smart.community.region.service;

import com.smart.community.feign.region.dto.AddressInfoDTO;

import java.util.List;

/**
 * 地址服务接口
 * 提供地址查询和构建功能
 * 
 * @author Wu.Liang
 * @since 2025-01-30
 */
public interface IAddressService {
    
    /**
     * 根据房户ID获取详细地址
     * 
     * @param householdId 房户ID
     * @return 详细地址信息
     */
    AddressInfoDTO getAddressByHouseholdId(Long householdId) throws Exception;
    
    /**
     * 根据单元ID获取详细地址
     * 
     * @param unitId 单元ID
     * @return 详细地址信息
     */
    AddressInfoDTO getAddressByUnitId(Long unitId) throws Exception;
    
    /**
     * 根据楼栋ID获取详细地址
     * 
     * @param buildingId 楼栋ID
     * @return 详细地址信息
     */
    AddressInfoDTO getAddressByBuildingId(Long buildingId) throws Exception;
    
    /**
     * 根据社区ID获取详细地址
     * 
     * @param communityId 社区ID
     * @return 详细地址信息
     */
    AddressInfoDTO getAddressByCommunityId(Long communityId) throws Exception;
    
    /**
     * 批量根据房户ID获取详细地址
     * 
     * @param householdIds 房户ID列表
     * @return 详细地址信息列表
     */
    List<AddressInfoDTO> getAddressesByHouseholdIds(List<Long> householdIds) throws Exception;
    
    /**
     * 批量根据单元ID获取详细地址
     * 
     * @param unitIds 单元ID列表
     * @return 详细地址信息列表
     */
    List<AddressInfoDTO> getAddressesByUnitIds(List<Long> unitIds) throws Exception;
    
    /**
     * 批量根据楼栋ID获取详细地址
     * 
     * @param buildingIds 楼栋ID列表
     * @return 详细地址信息列表
     */
    List<AddressInfoDTO> getAddressesByBuildingIds(List<Long> buildingIds) throws Exception;
    
    /**
     * 批量根据社区ID获取详细地址
     * 
     * @param communityIds 社区ID列表
     * @return 详细地址信息列表
     */
    List<AddressInfoDTO> getAddressesByCommunityIds(List<Long> communityIds) throws Exception;
} 